<?php
	class auth_controller_auth extends Base
	{
		public $skeleton;
		private $authQuery;
		
		public function __construct()
		{
			parent:: __construct(true);
			$this -> authQuery = new authQuery();
			$this -> skeleton = "";
		}
		
		/**
		 * Wyświetlanie okienka logowania dla użytkownika panelu  
		 * @return 
		 */
		public function loginForm()
		{
			
		}
		
		/**
		 * Logowanie użytkownika do sytemu
		 * @return 
		 */
		public function login()
		{
//            pre($_SERVER);
			$sLogin = $_POST['login'];
			$sPass = md5($_POST['password']); 
            
			if(isset($_SESSION[PREFIX]['user']['login']))
			{
				$message['content'] = "Jesteś już zalogowany";
				$_SESSION[PREFIX]['message'] = $message;
				$this -> FriendlyLink(SITE_ADDRESS);
			}
			else
			{
				if($sLogin!=""&&$sPass!="")
				{
                    $data['email'] = $sLogin;
                    $data['password'] = $sPass;
                    $aUser = $this -> common -> select('users', '*',$data);
					if(isset($aUser[0]['email']))
					{
						//if($aUser[0]['flag_confirm'])
//						{
							$_SESSION[PREFIX]['user']['login'] = $_POST['login'];
							$_SESSION[PREFIX]['user']['id'] = $aUser[0]['id'];
							$message = "Zostałeś zalogowany";
							$_SESSION[PREFIX]['message']['content'] = $message;
							$_SESSION[PREFIX]['message']['type'] = "success";
							$this -> FriendlyLink($_SERVER['HTTP_REFERER']);
						//}
//						else
//						{
//							$message = "Twoje konto jest nie aktywne.";
//							$_SESSION[PREFIX]['message']['content'] = $message;
//							$_SESSION[PREFIX]['message']['type'] = 'error';
//							$this -> FriendlyLink(SITE_ADDRESS);
//						}
						
					}
					else 
					{
						
						$message = "Niepoprawny login lub hasło";
						$_SESSION[PREFIX]['message']['content'] = $message;
						$_SESSION[PREFIX]['message']['type'] = 'error';
						$this -> FriendlyLink(SITE_ADDRESS.'zaloguj');
					
					}
				}
				else
				{
					$_SESSION[PREFIX]['message']['content'] = "Musisz podać login i hasło";
					$_SESSION[PREFIX]['message']['type'] = 'error';
					$this -> FriendlyLink(SITE_ADDRESS.'zaloguj');				
				}
			}
		}
		
		public function confirm()
		{
			if(isset($_GET['control']))
            {
                $fields['control'] = $_GET['control'];
                $user = $this -> common -> select("users", "*", $fields);
                
                if(!$user[0]['flag_confirm'])
                {
                    $field['flag_confirm'] = "1";
                    $this -> common -> update($field,'users',"control='".$_GET['control']."'");
                    $message['type'] = "success";
                    $message['content'] = "Twoje konto zostało aktywowane. Możesz się teraz zalogować.";
                    $mailingContent = file_get_contents(MAIN_PATH.'public/mailing/afterActivation.html');
                    $mailingContent = str_replace('%%url%%', SITE_ADDRESS, $mailingContent);
                       
                    $this -> SendEmail($user[0]['email'], $mailingContent, "Potwierdzenie aktywacji.", "SOSpraca.pl");
                }
                else
                {
                    $message['type'] = "error";
                    $message['content'] = "Twoje konto jest już aktywne.";
                }
                $this -> setMessage($message);
            }
            $this -> setMessage($message);
            $this -> FriendlyLink(SITE_ADDRESS);
                        
		}
        
        public function forgetPasswordForm()
        {
            $this -> view -> assign('singleSite', 'true');   
        }
        
        public function reminedMePassword()
        {
            $where = array();
            $where['email'] = $_POST['email'];
            $user = $this -> common -> select('users', 'id');
            if(isset($user[0]['id']) && $user[0]['id'] !="")
            {
                $control = md5(rand(100, 130000).time());
                $mailingContent = file_get_contents(MAIN_PATH.'public/mailing/newPassword.html');
                $mailingContent = str_replace('%%url%%', SITE_ADDRESS, $mailingContent);
                $mailingContent = str_replace('%%newPassword%%', $control, $mailingContent);
               
                $el = array();
                $el['control'] = $control;
                $el['remind_password'] = 'true';
                $where = array();
                $where['id'] = $user[0]['id'];
                $this -> common -> update($el, 'users', $where); 
               
                $this -> SendEmail($_POST['email'], $mailingContent, "Przypomnienie hasła w serwisie SOSpraca.", "SOSpraca.pl");
                $message['type'] = "success";
                $message['content'] = "Na podany mail wysłane zostało nowe hasło. Sprawdź pocztę i zaloguj sie do naszego serwisu.";
            }
            else
            {
                $message['type'] = "error";
                $message['content'] = "W naszej bazie nie znajduje sie podany mail. Możesz załozyć konto <a href='".SITE_ADDRESS."rejestracja'>tutaj</a>";
            }
            $this -> setMessage($message);
            $this -> FriendlyLink(SITE_ADDRESS);
        }
        
        public function giveNewPasswordForm()
        {
            $where = array();
            $where['control'] = $_GET['newLink'];
            $where['remind_password'] = 'true';
            $user = $this -> common -> select('users', '*', $where);
            if(isset($user[0]['id']) && $user[0]['id'] !="")
            {
                $this -> view -> assign('id', $user[0]['id']);
                $this -> view -> assign('control', $_GET['newLink']);
            }
            else
            {
                $message['type'] = "error";
                $message['content'] = "Zgłoszona prośba o zmiane hasła zostanie zignorowana.";
                $this -> setMessage($message);
                $this -> FriendlyLink(SITE_ADDRESS);
            }
        }
        
        public function giveNewPassword()
        {
            $message = null;
            
            $IP = getenv("REMOTE_ADDR"); 
            if($_POST['password'] == "")
            {
                $message['form']['password'] = "Nie podałes hasła, które hcesz ustawić. Wypełnij to pole.";
            }
            
            if($_POST['password'] != $_POST['password_confirm'])
            {
                $message['form']['password_confirm'] = "Podane hasła są różne.";
            }
            
            if($message == null)
            {
                $el = array();
                $el['password'] = md5($_POST['password']);
                $el['remind_password'] = 'false';
                $where = array();
                $where['id'] = $_POST['id'];
                $where['control'] = $_POST['control'];
                $this -> common -> update($el, 'users', $where);
                
                $el = array();
                $el['user_id'] = $_POST['id'];
                $el['user_ip'] = $IP;
                $this -> common -> save($el, 'user_change_password');
                
                $where = array();
                $where['id'] = $_POST['id'];
                $user = $this -> common -> select('users', 'email', $where);
                
                $mailingContent = file_get_contents(MAIN_PATH.'public/mailing/changePassConfirm.html');
                $mailingContent = str_replace('%%url%%', SITE_ADDRESS, $mailingContent);
               
                $this -> SendEmail($user[0]['email'], $mailingContent, "Hasło do serwisu SOSpraca zostało zmienione.", "SOSpraca.pl");
                
                $message['type'] = "success";
                $message['content'] = "Hało zostało zmienione. Możesz sie teraz zalogować używając nowego hasła. Na email wysłana została wiadomość z potwierdzeniem zmiany hasła.";
                $this -> setMessage($message);
                $this -> FriendlyLink(SITE_ADDRESS."zaloguj");
            }
            else
            {
                $message['type'] = "error";
                $message['content'] = "Wystąpił bład w formularzu. Popraw go aby kontynuaować.";
                $this -> setMessage($message);
                $this -> putFiltr($_POST);
                $this -> FriendlyLink(SITE_ADDRESS."nowe-haslo/".$control);
            }
        }
		
		/**
		 * Wylogowywanie użytkownika z systemu
		 * @return 
		 */
		public function logout()
		{
			unset($_SESSION[PREFIX]);
            header("Location:".SITE_ADDRESS); 
			exit;
		}
        
        public function registrationForm()
        {
            
        }
		
		public function platnosc()
        {
            
        }
        
        public function registration()
        {
            $message = null;
            if($_POST['email'] == "")
            {
                $message['form']['email'] = "Nie podałeś emaila.";                
            }
            elseif(Validator::ValidateEmail($_POST['email']) == false)
            {
                $message['form']['email'] = "Podałeś niepoprawny email";               
            }
            else
            {
                $where = array();
                $where['email'] = $_POST['email'];
                $user = $this -> common -> select('users', '*', $where);
                if(isset($user['0']['id']) && $user['0']['id'] != "")
                {
                    $message['form']['email'] = "W naszej bazie znajduje się juz konto na podany email. Podaj inny. Lub jesli nie pamiętasz hasła przejdź do <a href='".SITE_ADDRESS."odzyskaj-haslo'>zakładki</a> aby je odzyskać.";
                }
            }
            
            if($_POST['password'] == "")
            {
                $message['form']['password'] = "Nie podałeś hasła.";
            }
            
            
            if($message == null)
            {
               $IP = getenv("REMOTE_ADDR");
               $el = array();
               $el['email'] = $_POST['email'];
               $el['password'] = md5($_POST['password']);
               $el['user_ip'] = $IP;
               $control = md5(rand(100, 130000).time());
               $el['control'] = $control;
               $this -> common -> save($el, 'users');
               $message['content'] = "Konto zostało założone, a na podany adres wysłany został kod aktywacyjny. Możesz korzystać z naszego serwisu, ale Twoje oferty beda widoczne paktywacji.";
               $message['type'] = "success";
               $this -> setMessage($message);
               
               $mailingContent = file_get_contents(MAIN_PATH.'public/mailing/registrationMail.html');
               $mailingContent = str_replace('%%url%%', SITE_ADDRESS, $mailingContent);
               $mailingContent = str_replace('%%secret%%', $control, $mailingContent);
               
               $this -> SendEmail($_POST['email'], $mailingContent, "Aktywacja w serwisie SOSpraca.", "SOSpraca.pl");
               $this -> FriendlyLink(SITE_ADDRESS);
               
            }
            else
            {
                $message['content'] = "Nie możesz się zarejestrować. Popraw błędy aby kontynuować.";
                $message['type'] = "error";
                $this -> setMessage($message);
                $this -> putFiltr($_POST);
                $this -> FriendlyLink(SITE_ADDRESS."rejestracja");
            }
        }
        
        public function facebookLogin()
        {
            
            $facebook = new Facebook(array(
              'appId'  => FB_ID,
              'secret' => FB_SECRET,
              'cookie' => true, 
            ));
            
            $me = null;
            $FBsession = $facebook -> getSession();
            // Pobranie sesji facebooka dla usera
            if ($FBsession) 
            {
              try 
              {
                $uid = $facebook->getUser();
                $me = $facebook->api('/me');
                $where = array();
                $where['email'] = $me['email'];
                $userInBase = $this -> common -> select('users', 'email', $where);
                
                if(isset($userInBase[0]['email']) && $userInBase[0]['email'] != "")
                {
                    $where = array();
                    $where['email'] = $me['email'];
                    $userFromBase = $this -> common -> select('users', '*', $where); 
                    $_SESSION[PREFIX]['user']['login'] = $userFromBase[0]['email'];
                    $_SESSION[PREFIX]['user']['id'] = $userFromBase[0]['id'];
                    $message['content'] = "Zostaleś zalogowany";
                    $message['type'] = "success";
                    $this -> setMessage($message);
                }
                else
                {
                    $el = array();
                    $el['email'] = $me['email'];
                    $el['name'] = $me['first_name'];
                    $el['surname'] = $me['last_name'];
                    $el['flag_fb'] = 't';
                    $el['fb_profile'] = $me['link'];
                    $el['fb_id'] = $me['id'];
                    $this -> common -> save($el, 'users');
                    $where = array();
                    $where['email'] = $me['email'];
                    $userFromBase = $this -> common -> select('users', '*', $where); 
                    $_SESSION[PREFIX]['user']['login'] = $userFromBase[0]['email'];
                    $_SESSION[PREFIX]['user']['id'] = $userFromBase[0]['id'];
                    $message['content'] = "Konto w naszym serwisie zostało utworzone. Zostałeś automatycznie zalogowany. Zapraszamy do korzystania z naszych usług.";
                    $message['type'] = "success";
                    $this -> setMessage($message);
                    
                }
              
                
                switch($_GET['opt'])
                {
                    case 'offer':
                    {
                        $this -> FriendlyLink(SITE_ADDRESS.'zaproponuj-usługi/'); 
                        break;    
                    }   
                    default:
                    {
                        $this -> FriendlyLink(SITE_ADDRESS.'moj-sos');
                        break;
                    }
                                     
                }
              }
              catch (FacebookApiException $e) 
              {
                error_log($e);
              }
            }
            else
            {
                $message['content'] = "Nie masz aktywnej sesji na Facebooku";
                $message['type'] = "error";
                $this -> setMessage($message);
                $this -> FriendlyLink(SITE_ADDRESS);                
            }
            
            
        }
	}
?>